package consultaADistancia;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

import util.Cons;

import com.movil.registrodelapropiedadgt.Prueba_listView;
import com.movil.registrodelapropiedadgt.R;
import com.movil.registrodelapropiedadgt.R.layout;
import com.movil.registrodelapropiedadgt.R.menu;

import consultaADistancia.Vitacora.conasync;

import accesoADatos.TRN_honorario;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Recibo extends Activity implements OnClickListener {
	//variables para comunicacion con WS
	private static final String SOAP_ACTION = Cons._WS_SOAP_ACTION_ConsultaRecibo;
	private static final String METHOD_NAME = Cons._WS_OPN_ConsultaRecibo;
	private static final String NAMESPACE 	= Cons._WS_NAMESPACE_Movil;
	private static final String URL 		= Cons._WSDL_URL_Movil;
	
	final HttpTransportSE transporte = new HttpTransportSE(URL);
	TRN_honorario tradutor=new TRN_honorario();
	public Boolean ter=false;
	conasync objcon =new conasync();
	boolean Existe=true;
	boolean errorWS=false;
	//interfaz grafica
	Button BT_mostrar_honorarios;
	EditText ET_NoRecibo;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_recibo);
		//boton de mostrar honorarios y enlaze con la layout
		BT_mostrar_honorarios=(Button) findViewById(R.id.LBT_ConsultaDocVitacora);
		BT_mostrar_honorarios.setOnClickListener(this);
		
		ET_NoRecibo=(EditText) findViewById(R.id.LET_NoRecibo);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.recibo, menu);
		return true;
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) 
		{
		
			case R.id.LBT_ConsultaDocVitacora:
				
				String STR_noRecibo = ET_NoRecibo.getText().toString();
				
				if(
						ET_NoRecibo.getText().toString().equals("")
						||
						ET_NoRecibo.getText().toString()==null
					)
				{
					Toast.makeText(
							getBaseContext(),
							"Debe de ingresar el numero del Recibo",
							Toast.LENGTH_LONG
							).show();
					 
				}
				else
				{
					objcon =new conasync();
					objcon.execute("");
					Show_honorarios.NoRecibo=STR_noRecibo.toUpperCase();
					
					int timeOut=Cons._TTL_Movil;
					while (Show_honorarios.Respuesta.equals("")&&timeOut!=0) {
						
						espera();
						timeOut = timeOut-1;
					}
					if(!errorWS){
						if(Existe){
							if(timeOut!=0){
		
								Intent it_MLO = new Intent(this, Show_honorarios.class );
								startActivity(it_MLO);	
							}else{
								pd.dismiss();
								pd.hide();
								Toast.makeText(
										getBaseContext(),
										"la comunicacion no se consiguio por favor pruebe nuevamente, o su numero de recibo es incorrecto",
										Toast.LENGTH_LONG*Cons._tiempo_MSJ_Espera
										).show();
							}
						}else{
							pd.dismiss();
							pd.hide();
							Toast.makeText(
									getBaseContext(),
									"Su numero de recibo es incorrecto",
									Toast.LENGTH_LONG*Cons._tiempo_MSJ_Espera
									).show();
						}
					}else{
						pd.dismiss();
						pd.hide();
						Toast.makeText(
								getBaseContext(),
								"la conecion al lservidor no tubo exito",
								Toast.LENGTH_LONG*Cons._tiempo_MSJ_Espera
								).show();
					}
						
					
				}
				Existe=true;
				errorWS=false;
			
			break;
		
		}
		
	}

///////////////////////////////////////////////////////////////////////
	private ProgressDialog pd = null;
	
	public class conasync extends AsyncTask<String, String, String>  {
	public Boolean termino=false;
	public String IDDocumento="";
	public Boolean getTermino(){
		return termino; 
	}
	@Override
	protected void onPreExecute() {
		pd = new ProgressDialog(Recibo.this);
		pd.setTitle("Espere");
		pd.setMessage("Procesando, por favor espere....");
		pd.setCancelable(false);
		pd.setIndeterminate(true);
		pd.show();
		//pd.hide();
	}
	
	public SoapPrimitive resultString = null;
	
	protected void onPostExecute() {
		if (pd != null) {
			ter=true;
			pd.dismiss();
			pd.hide();
			
		}
	}
	
	@Override
	protected String doInBackground(String... arg0) {
		
		try {
			String STR_NoRecibo=ET_NoRecibo.getText().toString();
			//remober para hacer dinamico
			//STR_NoRecibo="5510870";
			//TV_WebServicews1.setText("Esperando respuesta");
			
			SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
			HttpTransportSE transporte = new HttpTransportSE(URL);
			Request.addProperty(Cons._WS_InputName_ConsultaRecibo,STR_NoRecibo);
			
			SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
			SoapEnvelope.VER11);
			//soapEnvelope.dotNet = true;
			soapEnvelope.setOutputSoapObject(Request);
			transporte.call(SOAP_ACTION, soapEnvelope);
			resultString = (SoapPrimitive) soapEnvelope.getResponse();
			System.out.println(resultString.toString());
			////////////////////////////
			String respuesta_WS=resultString.toString();
			if(!respuesta_WS.equals("-1")&&!respuesta_WS.equals("-2")){
				
				Show_honorarios.honorarios=tradutor.getHonorario(tradutor.StringToJson(respuesta_WS));
				Show_honorarios.honorarios.setID_recibo(ET_NoRecibo.getText().toString().toUpperCase());
				Show_honorarios.Respuesta=respuesta_WS;
				Show_honorarios.NoRecibo=ET_NoRecibo.getText().toString().toUpperCase();
				
				
			}else{
				//asignacion de estado de error
				if(respuesta_WS.equals("-1")){
					Existe=false;
				}
				if(respuesta_WS.equals("-2")){
					errorWS=true;
				}
			}

			
			pd.dismiss();
			pd.hide();
			ter=true;
			
			
		} catch (Exception e) {
		System.out.println("error en la conexion " + e.getMessage());
		
		}
		return null;
	}
	
	public void funcionCallback(String json) {
	
	}
	protected void onPostExecute(Long result) {
	ter=true;
	
	}
	}
	///////////////////////////////////////////////////////////////////////
	
	public void espera(){
	
	try{
	Thread.sleep(1000);
	}catch(InterruptedException e){}
	
	}

///////////////////////////////////////////////////////////////////////
}
